[iOS][Mac] Swift を学べる記事のまとめ
Swift を学ぼう
弊社でも iOS エンジニアはもちろん、サーバーサイドのエンジニアや AWS エンジニアも Swift に興味津々です。Objective-C より読みやすく、モダンな書き方になっている反面、仕様を読み込んでみるとちょっと分かりづらいところもあったりします。
そこで、これまで Web で公開されている Swift について学べる記事を日本語の記事を中心にまとめてみました。今後も有益な情報が公開されたらガンガン追記していきます!
公式情報
一番有益な情報は間違いなく公式の情報です。
Xcode 6 から導入されたツール「Playground」で試しながら読んでいくことを想定して書かれているようです。Playground を使って挙動を確認しながら学ぶのが一番良いと思います。
- Swift Programming Language | Apple Developer
- The Swift Programming Language | iOS Developer Library — Pre-Release
- Using Swift with Cocoa and Objective-C | iOS Developer Library — Pre-Release
- Swift Standard Library References | iOS Developer Library — Pre-Release
概要
ざっくりと全体的な概要を知りたいときに参考になります。Swift について全く知らない人、または忙しい人はまずここを読みましょう。
- アップルの新言語「Swift」--押さえておくべき10のポイント | ZDNet Japan
- 新しいプログラミング言語 Swift | Developers.IO
- iOS8 で採用されるSwift言語オーバービュー | Swift言語ブログ
- Swift ファーストインプレッション | mizchi's blog
- Swiftに関するメモ | Qiita
- Swiftに関するメモ その2 | Qiita
- Swiftに関するメモ その3 - プロパティの監視・メソッドなど | Qiita
- Swiftに関するメモ その4 - 継承 | Qiita
- Swiftに関するメモ その5 - 初期化処理・終了処理 | Qiita
- Swiftに関するメモ その6 - メモリ管理と Optional Chaining | Qiita
- Swiftに関するメモ その7 - 型変換 | Qiita
- Swiftに関するメモ その8 - ネストされた型 | Qiita
- About Swift - Swiftとは(ざっくり翻訳してみた) | Qiita
- Swift (プログラミング言語) | Wikipedia
- The Swift Programming Language ゆるふわ和訳 その1 ~About Swift~・~Swift Tour~ | Qiita
- The Swift Programming Language ゆるふわ和訳 その2 ~A Swift Tour~ | Qiita
他の言語との比較
Swift は他のモダンな言語をインスパイヤして考えられているところが多々あります。これまで他の言語で開発していた人は以下の記事を読むと取っ付きやすいかもしれません。
- [iOS] 新言語SwiftがObjective-Cよりも良いところ | Qiita
- Swiftは○○に似ている | Qiita
- Swift vs Scala 2.11 | GitHub (PDF)
- Objective-Cを今すぐ捨てるべきたった一つの理由 | Qiita
- Objective-C++でSwiftに挑む | Qiita
基本構文
Swift はコードが短くなるように、いろいろな書き方が用意されています。基本的な書き方をマスターし、スマートに実装できるようにしましょう。
- 新プログラミング言語「Swift」の型と制御構文 | アップルの新プログラミング言語「Swift」を探検しよう 第1回 | CodeZine
- The Swift Programming Language - The Basics をまとめる | Qiita
- The Swift Programming Language - Basic Operators(基本演算子) をまとめる | Qiita
- Swift言語の入門 (1) 変数編 | Swift言語ブログ
- Swift Cheat Sheet
- Swift Cheat Sheet and Quick Reference (PDF)
- Swift Language Guide "The Basics" | Qiita
- Swift Language Guide "Basic Operators" | Qiita
- The Swift Prgramming Language ~Control Flow~ | Qiita
文字・文字列型
文字列の操作が Objective-C のときと比べ物にならないほどシンプルになりました。難しいところは全く無いので、ざっと目を通しておきましょう。
- The Swift Programming Language - Strings and Characters(文字列型、文字型)をまとめる | Qiita
- The Swift Programming Language "String and Character" | Qiita
配列などの集合型
Array や Dictionary を定義する方法や、中身を取り出す方法、または for ループさせる方法などがかなりシンプルになっています。
- Swift言語の入門 (3) コレクション編 | Swift言語ブログ
- Swift で空の Array の生成方法色々 | Qiita
- The Swift Programming Language - Collection Types(集合型、Array とか Dictionary)をまとめる | Qiita
- Assignment and Copy Behavior for Arrays | Qiita
- The Swift Programming Language "Collection Types"〜Array(配列)〜 | Qiita
- The Swift Programming Language "Collection Types"〜Dictionary(辞書)〜 | Qiita
- Swift の配列は “immutable” でも値を書き換えられる | Qiita
- SwiftのArrayがヤバイ | Qiita
- Swiftで定数(let)のArrayの要素は変更できるけどDictionaryでは変更できない理由 | Qiita
列挙型
列挙型も Objective-C から比べると強力になっており、柔軟に書くことができます。
- メソッドも呼び出せる! Swiftの強力な「列挙型」 | アップルの新プログラミング言語「Swift」を探検しよう 第3回 | CodeZine
- Swift言語の入門 (2) 列挙型編 | Swift言語ブログ
- The Swift Programming Language - Enumerations(enum列挙型)をまとめる | Qiita
クラス・ストラクチャ
Swift では、データを格納する目的でクラスとストラクチャというタイプがあります。
- Swiftの「クラス」と「ストラクチャ」 その① ~ プロパティ、メソッド、継承、ライフサイクル | アップルの新プログラミング言語「Swift」を探検しよう 第4回 | CodeZine
- Swift言語の入門 (5) 構造体編 | Swift言語ブログ
- Swift言語の入門 (7) クラス編 | Swift言語ブログ
- The Swift Programming Language - Classes and Structures(クラスと構造体)をまとめる | Qiita
- The Swift Programming Language - Properties(プロパティ)をまとめる | Qiita
- The Swift Programming Language - Method(メソッド)をまとめる | Qiita
- The Swift Programming Language - Inheritance(継承)をまとめる | Qiita
- The Swift Programming Language - Initialization(初期化)をまとめる | Qiita
- The Swift Programming Language - Deinitialization(デイニシャライゼーション)をまとめる | Qiita
- [Swift] convenienceイニシャライザとdesignated(指定)イニシャライザ | Qiita
- The Swift Programming Language - Nested Types(ネストされた型)をまとめる | Qiita
Optional
オブジェクトの型をセーフする目的で Optional という概念が導入されました。オブジェクトが空の場合に起こりうる諸問題が解決できるようです。この機能は Swift の基本でありながら、ちょっと分かりづらいところではあるので読んでおいたほうが良いと思います。
- Swiftことはじめ:String?のクエスチョンマークって何? | shoma2da's diary
- [Swift] 「!」、「?」マーク(Optional)についてのメモ | Qiita
- Swiftの「?」とか「!」などのOptional Valueの挙動を調べてみた | Qiita
- Optional の ? と ! の違い | Qiita
- [Swift] OptionalValueの便利さ /「?」と「!」でより堅牢なコードへ | Qiita
- Swift言語の入門 (6) オプション型編 | Swift言語ブログ
- SwiftのOptionalとType Safety | Qiita
名前空間
Swift では名前空間(名前の衝突が起こらないように記述できる概念)のようなものを用いることができます。具体的には、NestedType を利用する方法とモジュールを利用する方法の2通りの方法で実現できるようです。
- Swiftで名前空間を利用する | Qiita
- テストターゲットからアプリターゲットを参照する #Swift | Qiita
- Swiftの名前空間は暗黙的、アクセス制限修飾子は将来追加されるかも | Qiita
Subscript
Subscript は、要素に簡単にアクセスするための機能です。array["hoge"] 的な書き方を自分で作ることができます。
関数・クロージャ
Swift のクロージャはなかなか面白いです。
- Swiftのパワフルな記述力が秘められた 「関数」と「クロージャ」 | アップルの新プログラミング言語「Swift」を探検しよう 第2回 | CodeZine
- The Swift Programming Language - Function(関数)をまとめる | Qiita
- The Swift Programming Language - Closures(クロージャー)をまとめる | Qiita
- Swift のクロージャが面白い | Qiita
- Swift のグローバル定数を Closure で初期化 | Qiita
- インスタンスメソッド内でクラスメソッドを呼ぶ #Swift | Qiita
- iOSアプリ開発のためにSwiftでクロージャを実用的に使う方法 | Qiita
- Swiftにおける名前付き引数 | Qiita
- [Swift]関数とメソッドの、externalとlocalパラメータについて整理。 | Qiita
- Shorthand External Parameter Names in Swift | Qiita
- Shorthand Argument Names | Qiita
- Swiftでは関数はファーストクラスである。一体どういうことです? | Qiita
- Missing argument label in curried function | Qiita
パターンマッチ
パターンマッチは、For 文や Switch 文などの中で変数の状態によって条件分岐を行いたいときに便利なモダンな書き方です。独自のマッチング機構も作ることができます。
ジェネリクス
Swift では、実装時に使う型を指定できるジェネリクスという機能が導入されました。Java 経験者は馴染み深いですね。
アクセス修飾子
Swift のアクセス修飾子には private, internal, public の3つがあります。それぞれ他の言語と意味合いが異なるので、以下の記事で理解して使いましょう。
Objective-C 連携・移行
Swift と Objective-C は共存できるため、Swift で開発した場合でも既存のリソースを活用することができます。
- Objective-C で書いたアプリを Swift で書き換える5ステップ | Over&Out その後
- SwiftのコードをObjective-Cから呼んでみた | Qiita
- SwiftとObjective-Cの相互利用する際の注意 | Qiita
- 【iOS】Objective-C→ Swift のbefore/after で気になったメモ | Qiita
- [Swift] SwiftとObjective-Cで相互に連携する | Qiita
- 【Objective-CとSwift比較】※今後追加予定 | Qiita
- SwiftでObjective-CのFrameworkを読み込む方法 | Qiita
- Objective-CのコードをSwiftに書き換える時の流れメモ | Qiita
- SwiftでCの配列を使う | Qiita
- Objective-Cで作ったのをSwiftにする記録(ぷちプログラム) | Qiita
- Swift 中級編 | Speaker Deck
注意点
Swift でアプリを開発するときに気をつけておいたほうが良いポイントです。
- Swift を使ってみてがっかりした点まとめ | Qiita
- Swiftで気になった事 | Qiita
- Swiftのautoreleasepool等で注意する点 | Qiita
- Swift がいまいちイケてない 10 のコト | SlideShare
実践記事
Swift で◯◯してみたという実践記事です。「書き方は覚えたけどなんかまだフワフワしてる」と感じている人は、実際にコーディングしてみると理解できるかも知れません。
Tips
- swiftはかわいい | Qiita
- Swiftでリソースにあるjsonファイルを読み込む | Qiita
- [Swift]自作クラスでfor...in | Qiita
- [Swift]reduce<U>(initial: U, combine: (U, T) -> U) -> Uを使ってみました | Qiita
- Swiftで新しい演算子を定義する | Qiita
- Swiftでジェネリッククラスを書いてみた | Qiita
- Swift の true と TRUE は別物です。 | Qiita
- SwiftのenumでWeekdayとか書いてみたメモ | Qiita
- Swiftでは配列の型が確定しないとfor inは扱えない(気がする) | Qiita
- Swiftでジェネリックなremap関数を作る | Qiita
- Swiftは多重ループなどを一気にbreakできる | Qiita
- Swiftでポインタが指している値にアクセス | Qiita
- SwiftでRubyのInteger#timesを実装してみた | Qiita
- Swiftで現在日時を取得し、様々なスタイルで出力する方法 | Qiita
- Swiftでクラスのreadonly propertyのoverride | Qiita
- Swiftで逆順のRangeを使う | Qiita
テスト
アプリの開発
- SwiftのRSS Readerを100行で作ったよ | Qiita
- SwiftでTiqav APIを叩くビューワアプリを100行でつくったよ | Think Big Act Local
- SwiftでWebAPIアプリを作った時の要点 | Qiita
- swiftでtwitterアプリを作ったときにハマったこと | Qiita
- WebAPIを利用する際のOptional Bindingやクロージャを駆使したSwiftらしいコードの書き方の解説 | Qiita
- SwiftからGoogle Cloud Endpointsで作成したLibraryを使って、Google App Engine上のAPIを呼んでみた | Qiita
- iOS+Swift でいい感じに WebP を扱うサンプル。ついでにUICollectionViewの画像リクエストのチューニングについて色々 | Qiita
- SwiftでOS Xのフォトフレームアプリを作ってみた | Re: no subject
ゲームアプリの開発
- fullstackio/FlappySwift | GitHub
- gscalzo/FlappySwift | GitHub
- austinzheng/swift-2048 | GitHub
- SwiftとSpriteKitを使って1分でゲームを作る | Qiita
- Sprite KitでFlappy Birdを作る(Swift版) | Qiita
- ynaoto/SwiftBreakout | GitHub
開発環境
- Swiftアプリを実機のiPhone 5にデプロイするまでの手順 | Qiita
- Swiftのインタプリタモードが楽しい | Qiita
- Alfred でラクに Swift のドキュメント検索する設定 | Qiita
- 第五回 Xcode以外でSwiftを書きたい人のためのプラグイン×3選 | Mobile Touch
- Sublime Text2&3用のSwift Package | Qiita
- Swiftをコマンドラインで実行してWebAPIからjsonを取得する | Qiita
- Sublime Text2上でSwiftをコンパイル&実行 | Qiita
- これからはじめる SwiftPlayground入門 | SlideShare
iOS SDKの利用
- SwiftでUIViewController+UITableView | Qiita
- SwiftでUIViewController+UITableView+CustomCell+Model | Qiita
- SwiftでUIWebViewを使ってみる | Qiita
- Swiftでアニメーションとタイマーを使ってみた | Qiita
- Swiftで音楽プレイヤー作ってみた | へっぽこエンジニアの奮闘記
- SwiftでTabBarの仕組みを EmptyApplicationから作ってみた。 | Qiita
- [Swift]【NSUserDefaultsの基本的な使い方】表示、格納、削除。 | Qiita
- SwiftでAVFoundationを使ったカメラアプリのサンプル | Qiita
- swiftで、現在地を取得して、GoogleMapで表示 | Qiita
- [Swift]POSTでAPIを叩く方法。(そしてJSONを取得する。) | Qiita
- SwiftでPush通知 | Qiita
- swiftで画面遷移:UINavigation | Qiita
- [Swift] Delegateの簡単なサンプル(キーボードを下げる) | Qiita
- 第一回 UITableViewを使って表示してみる | Mobile Touch
OSSの利用
- SwiftでAFNetworkingを使う | Qiita
- SwiftでAFNetworking | Qiita
- Swift界隈で話題沸騰中のテストフレームワーク Quick とは? | Qiita
- SwiftがRubyやUnderscoreライクに書けるExSwiftとDollar.swiftの比較 | Qiita
OSS
早くもさまざまな Swift 製の OSS が公開されています。OSS については量も多いため、別途記事にてまとめました。ぜひご参照ください。
OSS については、Swift Toolbox という検索サイトもあります。こちらから探してみると良いかも知れません。
ツール
Swift を使ったアプリ開発を支援するツールたちです。
URL | 機能 |
---|---|
toyamarinyon/vim-swift | Vim のプラグイン。シンタックスハイライトなど。 |
darinmorrison/atom-language-swift | Atom でシンタックスハイライトを表示するプラグイン。 |
tachiba/atom-execute-as-swift | Atom 上で Swift コードを実行するプラグイン。 |
chrisbarrett/swift-mode | Emacs でシンタックスハイライトを表示するプラグイン。 |
Swift-Sublime-Package | Sublime Text 2, 3 用のプラグイン。 |
Carthage | Swift 製 OSS のパッケージ管理ツール。 |
情報収集
Swift の技術情報を収集するためには、RSS リーダーに登録したりまとめサイトをチェックすると良いと思います。そしてやっぱり Qiita の情報量が圧倒的に多いです。
- Developer Forums: Swift | Apple Developers
- Swift に関する新着投稿 | Qiita
- #swiftの検索結果 | Twitter
- Chris Lattner (clattner_llvm) | Twitter
- Search - swift | GitHub
- Newest 'swift' Questions | Stack Overflow
- みんな初心者!新言語「Swift」関連情報を最速で収集するたった1つの方法 | Vingow 開発チームブログ
まとめ
まとめのまとめです。
- ライバルに差をつけるための「Swift」情報総まとめ | ソフトアンテナブログ
- Swiftエンジニアが今週末キャッチアップしたいサンプルコードまとめ | Qiita
- Swift / XCode 6 関連の記事をまとめてみる(更新継続) | Qiita
- The Swift Programming Language をまとめる | Qiita
- LearnSwift
- Swift リンク集 | Qiita
- AppleのSwift言語を学ぶためのオンラインリソース | InfoQ
- iOSで気になるライブラリ Swift編 | Qiita
- swiftでゲーム作成してる動画まとめ | Qiita
書籍
これから Swift の勉強を始めるには、書籍を読んでまとまった知識を身に付けるのも良いと思います。
発売日 | 書籍タイトル | 執筆者 | 出版社 | 形式 | 価格 |
---|---|---|---|---|---|
2014年06月19日 | 先取り!Swift | 諏訪 悠紀, 小室啓, 掛川敦史 | 技術評論社 | 電子書籍 | ¥600 |
勉強会
早くも Swift 勉強会が各地で開催される(された)ようです。乗り遅れないためにも、ぜひ参加して情報共有しましょう!ちなみに筆者は6月25日の勉強会で LT するらしいです。